The present disclosure generally relates to storage devices. In particular, this disclosure relates to block storage devices having a log-structured array (LSA) architecture.
Many data storage devices use an LSA structure to describe and map the logical-to-physical layout of block storage devices. Storage devices employing an LSA structure can be useful due to the trend of increasing computer memory sizes, which can result in data read operations being increasingly likely to be fulfilled from a cache memory, without need for a storage device read operation. As a result, data storage device's I/O can have an increasing proportion of write operations relative to the number of read operations. The use of an LSA can result in an increase in write throughput, as write operations can be “batched” into large sequential runs and subsequently written to the end of the current data. The technique of batched writes can be faster than locating an existing copy of the data and subsequently rewritten, with the possible addition of non-contiguous blocks. Using a batch write method, multiple, chronologically-advancing versions of both the data and associated metadata are created, meaning that earlier versions of the data and its associated metadata can also be available.
Repeated writes to the same Logical Block Address (LBA) can, however, cause the data that is written to move across locations in the storage device as new space is allocated and garbage data is collected. This can lead to problems with applications using that storage device because of constant access to sectors such as “superblock,” “keep-alive” and “superblock backup” sectors. Moving these sectors to various locations on the storage device can potentially negatively impact storage device read and write performance. Further, application durability can be reduced by physically grouping sectors such as superblock, keep-alive, “superblock backup” sectors that the application would have preferred to keep separate.